1. Field of the Invention
The present invention relates to computer graphics. More particularly, the present invention relates to anisotropic filtering techniques and applications thereof.
2. Related Art
As would be known to a person skilled in the relevant computer graphics art, it is difficult to model intricate surface details of objects using geometric primitives or polygons (e.g., triangles). This difficulty however can be overcome in many instances by a process known as texture mapping.
The process of texture mapping involves mapping or applying a texture image to a surface of a computer-generated object or graphical model as the object is rendered. More particularly, the process of texture mapping involves sampling intensity data (i.e., texels) of a texture image during the rendering of a computer scene. The sampled texels of the texture image are used to generate pixel intensity values for the pixels of the final computer scene.
While the process of texture mapping has many benefits, it also has some undesirable effects. For example, one undesirable effect produced by the process of texture mapping is a form of image distortion known in the relevant art as aliasing. Aliasing is caused, for example, by the use of rendering techniques that assign an intensity value of a primitive or texture sample being rendered to a pixel of the final computer scene, regardless of whether the primitive or texture sample covers all or only a portion of the pixel of the final scene. Aliasing results in computer scenes that are blurry or that have jagged edges.
In real time graphics systems, aliasing is a particularly significant problem. Because real time graphics systems must compute all the pixels of a computer scene in a very short, fixed duration of time, real time graphics systems make approximations in both the size and shape of the area of a texture image that should be sampled during rendering. The area of the texture image sampled during rendering (commonly referred to in the relevant computer graphics art as a filter footprint) defines which texels of the texture image are used to compute the intensity values of the pixels of the computer scene. These approximations add distortion to the final computer scene.
In order to reduce the amount of aliasing that results from the process of texture mapping, some computers are equipped with specially designed graphics hardware that allows pre-filtered texture images (called MIPMAPs) to be stored in a texture memory and accessed during the rendering of a computer scene. Using pre-filtered texture images to render a computer scene helps to eliminate some of the image artifacts caused by texture mapping, and it shortens the amount of time needed to render a computer scene. Some of the known available features of specially designed graphics hardware include the ability to perform bilinear and/or trilinear filtering of texture images during the rendering of a computer scene. As would be known to a person skilled in the relevant art, however, available graphics hardware, including available specially designed graphics hardware, has many limitations. For example, most available graphics hardware cannot anisotropicly filter a texture image during the rendering of a computer scene, and specially designed graphics hardware that can perform anisotropic filtering is expensive and limited in its ability to anisotropicly filter a texture image.
What is needed are new techniques for anisotropicly filtering texture images that overcome the deficiencies and limitations discussed above.
The present invention provides anisotropic filtering techniques and applications thereof. In an embodiment, an object is rendered with anisotropic filtering by rendering a first copy of the object using a texture sample selected from a texture image. This texture sample is selected from the texture image according to a first set of texture coordinates. The rendered object is stored in a frame buffer. Next, a second copy of the object is rendered using a second texture sample selected from the texture image. The second texture sample is selected from the texture image according to a second set of texture coordinates calculated in accordance with the first set of texture coordinates and one or more Jitter factors. The second set of calculated texture coordinates is displaced from the first set of texture coordinates along an axis of anisotropy. This second rendered copy of the object is then blended with the first rendered copy of the object to produce an object with anisotropic filtering.
In other embodiments of the invention, more than two copies of the object are rendered and blended together to form an object with anisotropic filtering.